home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / infosrvr / dev / www_talk.930 / 000815_dsr@hplb.hpl.hp.com _Mon Apr 5 14:45:50 1993.msg < prev    next >
Internet Message Format  |  1994-01-24  |  9KB

  1. Return-Path: <dsr@hplb.hpl.hp.com>
  2. Received: from dxmint.cern.ch by  nxoc01.cern.ch  (NeXT-1.0 (From Sendmail 5.52)/NeXT-2.0)
  3.     id AA18663; Mon, 5 Apr 93 14:45:50 MET DST
  4. Received: from hplb.hpl.hp.com by dxmint.cern.ch (5.65/DEC-Ultrix/4.3)
  5.     id AA03942; Mon, 5 Apr 1993 15:04:48 +0200
  6. Received: from dragget.hpl.hp.com by hplb.hpl.hp.com; Mon, 5 Apr 93 13:58:56 +0100
  7. Received: by manuel.hpl.hp.com
  8.     (16.6/15.6+ISC) id AA02968; Mon, 5 Apr 93 14:05:43 +0100
  9. From: Dave_Raggett <dsr@hplb.hpl.hp.com>
  10. Message-Id: <9304051305.AA02968@manuel.hpl.hp.com>
  11. Subject: Re WWW ideas
  12. To: timbl@www3.cern.ch
  13. Date: Mon, 5 Apr 93 14:05:40 BST
  14. Cc: www-talk@nxoc01.cern.ch
  15. Mailer: Elm [revision: 66.36.1.1]
  16.  
  17. Dear Tim
  18.  
  19. What mechanism do you want to see for adding some simple extensions to HTML
  20. e.g. to support forms and tables? As you know, I have thought quite a bit
  21. about both of these. Perhaps an experimental browser and sample docs are
  22. needed?
  23.  
  24. What happened to our ideas for having richer forms with support for
  25. multiple fields? I enclose for you my proposal for extending HTML to 
  26. support such forms. An outstanding issue is how you can escape special
  27. characters in search string. I seem to remember that   style
  28. sgml character references are permitted, but this seems to be missing from
  29. the current addressing bnf doc:
  30.  
  31.     http://info.cern.ch:80/hypertext/WWW/Addressing/BNF.html
  32.  
  33.  
  34. The following is part of an exchange I had with Dan Connolly in January on
  35. the modifications to HTML needed for such forms:
  36.  
  37.     1)  server sends whole form in response to a GET command
  38.  
  39.     2)  user interacts with client only to fill out form
  40.  
  41.     3)  user instructs client to send completed form to server
  42.  
  43.     4)  client sends form contents to server as a query string
  44.  
  45.     5)  server executes query and returns results
  46.  
  47. A smarter/more sophistocated system would include scripts as part of the
  48. queryform document, which apply the constraints locally WITHOUT any network
  49. delays. BUT that seems too open-ended and complex for us to put in HTML for
  50. now!
  51.  
  52. Best wishes,
  53.  
  54. Dave Raggett
  55.  
  56. p.s. Did you get my suggestions for tables in HTML?
  57.  
  58.  
  59. ---A brief explanation of HTML forms:---------------------------------------
  60.  
  61. Forms are composed from the following elements
  62.  
  63.     o   checkbox (boolean)
  64.     o   text field
  65.     o   numeric field (integer and floating point)
  66.     o   radio-button groups
  67.     o   one-from-many menu
  68.     o   n-from-m menu
  69.  
  70. These are specified with 4 new tags:
  71.  
  72.         <queryform>     appears between <head> and </head>
  73.                         to indicate that this document is a query form, it
  74.                         optionally specifies an href for processing the query
  75.  
  76.         <input>         boolean values, text, integer and floats
  77.  
  78.         <select>        radio buttons and selection menus
  79.  
  80.         <choice>        specifying alternatives for <select>
  81.  
  82. A formal definition is given later on as an extension to the DTD. An informal
  83. definition is given first:
  84.  
  85. When the browser finds the <queryform> the user can fill in the form
  86. and use it to make a request. The browser should offer a search button or
  87. menu action. The <input> and <select> tags are then used to build the text
  88. search string to send to the user.
  89.  
  90. The format for sending form contents back to the server has been chosen to
  91. be backwards compatible with older HTTP servers. Thus the search string is
  92. restricted to letters, digits, and chars from the string "$_@!%^&*()."
  93.  
  94.     QUERY  ::=  FIELD [+QUERY]
  95.     FIELD  ::=  name@value | name@(VALUES)
  96.     VALUES ::=  value [&VALUE]
  97.  
  98. e.g. "name@value+name@(value&value)
  99.  
  100. The use of brackets for multiple values allows servers to continue to treat
  101. the characters &, ^, ! for logical operators.
  102.  
  103. The tags for form fields look like (more detail in the DTD):
  104.  
  105.     <input name=FIELDNAME type=FIELDTYPE [width=FIELDWIDTH]>
  106.  
  107.     FIELDNAME is a unique identifier for this form
  108.     FIELDTYPE ::= "boolean" | "text" | "date" | "integer" | "float"
  109.  
  110.     The [ ] brackets denote optional attributes.
  111.     
  112. The width can be optional, since the browser can support sideways scrolling
  113. of the input field when the entry exceeds the current display width. For line
  114. mode browsers, this requires a cursor addressing functionality, like CURSES.
  115.  
  116. The "date" format accepts a date in one of the following formats:
  117.  
  118.     o   12th June 1992
  119.     o   June 12th 1992
  120.     o   12/6/92
  121.     0   6/12/92
  122.     o   12-6-92
  123.     o   12 Jun 92
  124.  
  125. The format is indifferent to MM/DD/YY or DD/MM/YY, and the form's text should
  126. make it clear which is expected.
  127.  
  128. Multiple choice items need a richer structure, e.g.
  129.  
  130.     <select name=FIELDNAME type=CHOICETYPE [value=VALUE]>
  131.         <choice>item 1
  132.         <choice>item 2
  133.         <choice>item 3
  134.     </select>
  135.  
  136.     CHOICETYPE ::= "radio" | "single" | "multiple"
  137.  
  138. The choice initially shown is given by the value attribute for the <select>
  139. token, defaulting to the first choice. The value returned is the item text
  140. unless a "value" attribute is defined for that <choice>.
  141.  
  142.     <choice value=VALUETEXT>
  143.  
  144. I think that <a> tags should be permissible for <choice> text so that you can
  145. provide further explanations upon request for each choice. If there isn't a
  146. value attribute then the displayable text for the anchor would form part of
  147. that choice in the obvious manner. The DTD includes a help parameter which
  148. would permit browsers to offer help on form elements.
  149.  
  150. Forms generally involve additional ideas:
  151.  
  152.     a)  expressions and queries for output fields
  153.  
  154.     b)  edits (constraints) on input field values
  155.  
  156.     c)  dependencies between fields
  157.  
  158. These can all be handled by the server, albeit with a performance penalty as
  159. perceived by the user.
  160.  
  161. It is important to be able to show the current values as currently being in
  162. error (along with an explanation). For example you could have a form for
  163. configuring a computer system, which gives you choices for the number of hard
  164. and soft drives:
  165.  
  166.  ---------------------------------------------------------------------------
  167.      *  Fixed Drive(s): [2 x 512 Gb disk]
  168.      *  Soft Drive(s):  [1 x 1.44 Mb 3.5" floppy]
  169.  
  170.  (*) Error: you are only allowed a combined total of 2 fixed and soft drives
  171.  ---------------------------------------------------------------------------
  172.  
  173. So we need to provide attributes to:
  174.  
  175.     a)  signify that the current choice is in error in some way
  176.     b)  that a given choice is not currently permissible (grayed out)
  177.  
  178. This can be done with two attributes (both default to "yes"):
  179.  
  180.     ok="yes" | "no"             ;;  for <input> and <select>
  181.     enabled="yes" | "no"        ;;  for <choice>
  182.  
  183. -----Additions to HTML DTD for QueryForms----------------------------------
  184.  
  185. <!-- uses Dan's definition for %URL, %inline and %text -->
  186.  
  187. <!-- The queryform element needs adding to the spec for HEAD -->
  188.  
  189. <!ELEMENT HEAD - - (TITLE ? & ISINDEX ? & QUERYFORM ? & NEXTID ? & LINK *
  190.                         & BASE ? )>
  191.  
  192. <!ELEMENT QUERYFORM - 0 EMPTY]
  193. <!ATTLIST QUERYFORM HREF %URL; #IMPLIED>
  194.  
  195. <!-- The following defines the <input> tag with the attributes:
  196.  
  197.     name    (required)
  198.         unique name used to identify field to server
  199.  
  200.     type    (required)
  201.         indicates type of input value (boolean, text, date, integer, float)
  202.  
  203.     width   (optional, defaults to 20)
  204.         width for field in terms of average char width
  205.         browsers should allow users to type up to this number of chars
  206.         and no more (except for dealing with control keys e.g. backspace)
  207.  
  208.     value   (optional, defaults to null or "")
  209.         initial value to display in the input field
  210.  
  211.     ok      (optional, defaults to yes)
  212.         when no, signifies that the current value is in error.
  213.  
  214.     enabled (optional, default to yes)
  215.         when no, prevents user from changing this field's value
  216.  
  217.     help    (optional, default provided by application)
  218.         a URI which would provide explanatory information for this field
  219. -->
  220.  
  221. <!ENTITY % url "CDATA" -- this is kind of a DTD macro >
  222. <!ELEMENT input - O EMPTY>
  223. <!ATTLIST input
  224.     name ID #REQUIRED
  225.     type (boolean|text|date|integer|float) #REQUIRED
  226.     width NUMBER "20"
  227.     value CDATA ""
  228.     ok (yes|no) "yes"
  229.     enabled (yes|no) "yes"
  230.     help %URL; #IMPLIED
  231. >
  232.  
  233. <!-- The following defines the <select> tag for selection menus -->
  234.  
  235. <!ENTITY SELECT - - (CHOICE)*>
  236.  
  237. <!ATTLIST select
  238.     name ID #REQUIRED
  239.     type (radio|single|multiple) #REQUIRED
  240.     value PCDATA ""
  241.     ok (yes|no) "yes"
  242.     enabled (yes|no) "yes"
  243.     help %URL; #IMPLIED    
  244. >
  245.  
  246. <!-- The following defines the <choice> tag which is
  247.         used to specify choices for the <select> tag  -->
  248.  
  249. <!ENTITY CHOICE - O (%text; | CHOICE)*>
  250.  
  251. <!ATTLIST choice
  252.     value PCDATA "" #REQUIRED
  253.     enabled (yes|no) "yes"
  254. >
  255.